package com.cactus.utils;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.concurrent.atomic.AtomicInteger;

public class DailySerialNumberGenerator {

    /**
     * 这个变量用来保存上次的流水号
     * @param lastSerialNumber
     * @return
     */
    public static synchronized String getNextSerialNumber(String lastSerialNumber) {
        AtomicInteger counter = new AtomicInteger(1); // 初始值设为1
        String dateString = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
        if (lastSerialNumber == null || !lastSerialNumber.startsWith(dateString)) {
            counter.set(1); // 如果日期发生变化，将计数器重置为1
        } else {
            counter.incrementAndGet(); // 否则，递增计数器
        }
        String serialNumber = String.format("%s%04d", dateString, counter.get()); // 生成新的流水号
        lastSerialNumber = serialNumber; // 更新上次的流水号
        return serialNumber;
    }


    public static void main(String[] args) {
        String nextSerialNumber = DailySerialNumberGenerator.getNextSerialNumber(null);
        System.out.println(nextSerialNumber);
    }

}
